from django.shortcuts import render

from rest_framework.views import APIView

from rest_framework.response import Response

from django.core.paginator import Paginator

from .ser import *

from .models import *

import re

# Create your views here.

# 店主表操作
class ShopkeeperM(APIView):
    # 获取店主表
    def get(self,request):
        # 获取店主表所有信息
        shopkeep=Shopkeeper.objects.all()
        # 调用序列化器
        ser=ShopkeepSer(shopkeep,many=True)
        # 返回
        return Response({'code':'200','list':ser.data})

# 商品表操作
class ShopM(APIView):
    # 商品表添加
    def post(self,request):
        # 调用序列化器
        ser=ShopSer(data=request.data)
        # 验证
        if ser.is_valid():
            # 保存
            ser.save()
            return Response({'code':'200'})
        else:
            print(ser.errors)
            return Response({'code':'10010'})

#   班级表操作
class CalssM(APIView):
    # 获取班级及班级下的课程
    def get(self,request):
        # 获取班级表所有信息
        cla=Class.objects.all()
        # 调用班级表序列化器  这是一个嵌套序列化器
        ser=ClassSer(cla,many=True)
        return Response({'code':200,'list':ser.data})

#  注册接口
class Reg(APIView):
    def post(self,request):
        # 调用学生表序列化器
        ser=StudentSer(data=request.data)
        # 验证
        if ser.is_valid():
            ser.save()
            # 注册成功，返回 student、id、name0        通过获取username来获取Student表中的信息 然后赋值给了student
            student=Student.objects.filter(username=request.data.get('username')).first()
            # 返回  根据student获取id和name
            return Response({'code':200,'id':student.id,'name':student.name})
        else:
            print(ser.errors)
            return Response({'code':10010})


    def get(self,request):
        # 获取id
        id=request.GET.get('id')
        # 拿到id之后去这张表里查信息
        student=Student.objects.filter(id=id).first()
        # 调用序列化器
        ser=ShowStuSer(student)
        # 返回
        return Response({'code':200,'cla':ser.data})
        # return Response('ok')

#   升班按钮
class ChangeClass(APIView):
    def post(self,request):
        # 升班
        # 获取小朋友id
        id=request.data.get('id')
        # 查询小朋友现在所在班级，type=3 返回，1,2  first()的意思是只取一条数据
        student=Student.objects.filter(id=id).first()
        # 调用序列化器
        ser=ShowStuSer(student)
        s=ser.data
        if s['cla']['type']==1:
            # 升级为中班
            # 查询类型为中班的班级id
            cla=Class.objects.filter(type=2).first()
            student.cla_id=cla.id
            student.save()
            return Response({'code':200})
        elif s['cla']['type']==2:
            # 升级为大班
            # 查询类型为中班的班级id
            cla=Class.objects.filter(type=3).first()
            student.cla_id=cla.id
            student.save()
            return Response({'code':200})
        else:
            #返回不能升级
            return Response({'code':20010})

# 分类表操作
class CateM(APIView):
    def post(self,request):
        # 调用序列化器
        ser=CateSer(data=request.data)
        # 验证
        if ser.is_valid():
            # 保存
            ser.save()
            # 返回
            return Response({'code':200})
        else:
            print(ser.errors)
            return Response({'code':10010})

    def get(self,request):
        # 获取分类表所有信息
        cate=Cate.objects.all()
        # 调用序列化器
        ser=CateSer(cate,many=True)
        # 返回
        return Response({'code':200,'list':ser.data})

# 商品表操作
class ShowshopM(APIView):
    def post(self,ruquest):
        #调用序列化器
        ser=Show_ShopSer(data=ruquest.data)
        #验证
        if ser.is_valid():
            #保存
            ser.save()
            #返回
            return Response({'code':200})
        else:
            print(ser.errors)
            return Response({'code':10010})
    # 展示商品表
    def get(self,request):
        # 获取商品表所有信息
        shop=Show_Shop.objects.all()
        # 调用商品表序列化器 这是一个嵌套序列化器
        ser=Show_ShopSer(shop,many=True)
        # 返回
        return Response({'code':200,'list':ser.data})

class ShopRegM(APIView):
    def post(self,request):
        # 调用序列化器
        ser=UserSer(data=request.data)
        # 验证
        if ser.is_valid():
            # 保存
            ser.save()
            # 返回
            return Response({'code':200,'list':ser.data})
        else:
            print(ser.errors)
            return Response({'code':10010})

